package com.cloudeye.im.service;

import com.cloudeye.im.type.AccountRelationEnum;
import com.cloudeye.im.vo.ImGroup;
import com.cloudeye.im.vo.ImRoom;

import java.time.Duration;
import java.time.Instant;
import java.util.List;

/**
 * 第三方消息集成
 */
public interface ImIntegrationService {

    /**
     * 创建用户
     * @param userName
     * @param password
     */
     void createAccount(String userName,String password);

    /**
     * 更新在线、离线
     * @param userName
     * @param status
     */
    void updateOnlineOffLine(String userName,String status);

    /**
     * 添加好友、拉入黑名单
     * @param owner
     * @param user
     * @param type
     */
     void addAccountRelation(String owner , String user, AccountRelationEnum type);

    /**
     *
     * 移除好友，移除黑名单
     * @param owner
     * @param user
     * @param type
     */
     void removeAccountRelation(String owner,String user,AccountRelationEnum type);

    /**
     * 创建群组
     * @param imGroup
     * @return groupId
     */
     String createGroup(ImGroup imGroup);

    /**
     * 添加群成员
     * @param groupId
     * @param users
     */
     void addGroupUsers(String groupId,List<String> users);

    /**
     * 添加群管理员
     * @param groupId
     * @param admins
     */
    void addGroupAdmins(String groupId,List<String> admins);

    /**
     * 添加群禁言
     * @param group
     * @param blockUser
     */
     void addGroupBlock(String group, String blockUser);

    /**
     * 移除群禁言
     * @param group
     * @param blockUser
     */
    void removeGroupBlock(String group,String blockUser);

    /**
     * 删除群组
     * @param group
     */
    void removeGroup(String group);



    /**
     * 创建聊天室
     * @param imRoom
     */
    void createRoom(ImRoom imRoom);

    /**
     * 添加聊天室成员
     * @param room
     * @param users
     */
    void addRoomUsers(String room,List<String> users);

    /**
     * 添加聊天室管理员
     * @param room
     * @param admins
     */
    void addRoomAdmins(String room,List<String> admins);

    /**
     * 添加聊天室禁言
     * @param room
     * @param blockUser
     */
    void addRoomBlock(String room,String blockUser);

    /**
     * 移除聊天室禁言
     * @param room
     * @param blockUser
     */
    void removeRoomBlock(String room,String blockUser);

    /**
     * 删除聊天室
     * @param room
     */
    void removeRoom(String room);

    /**
     * 同步聊天记录
     * @param instant
     */
    void syncChatRecord(Instant instant);

}
